/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package manejadores;

import entidades.Informe;
import interfaz.Entidad;
import interfaz.Manejador;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import persistencia.Conexion;

/**
 *
 * @author Snailin
 */
public class ManejadorDeInforme implements  Manejador {


    private Conexion conexion=null;
    private static ManejadorDeInforme instancia=null;
    private ResultSet rs=null;
    private PreparedStatement stmt=null;
    private ArrayList<Informe>informes=null;

    public static ManejadorDeInforme getInstancia() {
        if(instancia==null){
            instancia=new ManejadorDeInforme();
        }
        return instancia;
    }

        private ManejadorDeInforme(){
            conexion=Conexion.getInstancia();
        }
    
        public ArrayList<Informe>getInformes(){
            informes=new ArrayList<Informe>();
            String sql= " SELECT * FROM informe ";
            stmt=conexion.hacerEnunciado(sql);
            rs=conexion.hacerConsulta(sql);
        try {
            while (rs.next()) {
                Informe informe=new Informe(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4),rs.getString(5));
                informes.add(informe);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeInforme.class.getName()).log(Level.SEVERE, null, ex);
        }
            return informes;
        
        }
    public int agregar(Entidad informe) {
      int fila=0;
      String sql="INSERT INTO informe (id_informe, informe_realizado, fecha_informe, nombre_persona_enviado, descripcion)VALUES(0, ?, ?, ?, ?)";
      stmt=conexion.hacerEnunciado(sql);
        try {
            stmt.setString(1, ((Informe)(informe)).getInformeRealizado() );
            stmt.setString(2, ((Informe)(informe)).getFechaInforme() );
            stmt.setString(3, ((Informe)(informe)).getNombrePersonaEnviado() );
            stmt.setString(4, ((Informe)(informe)).getDescripcion() );
            fila = stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeInforme.class.getName()).log(Level.SEVERE, null, ex);
        }
      return fila;
    }

    public int eliminar(int id) {
        int fila=0;
      String sql="DELETE FROM informe WHERE id_informe = ? ";
      stmt=conexion.hacerEnunciado(sql);
        try {
            stmt.setInt(1, id);
            fila = stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeInforme.class.getName()).log(Level.SEVERE, null, ex);
        }
      return fila;
    }

    public int modificar(Entidad informe, int id) {
        int fila=0;
      String sql="UPDATE informe SET  informe_realizado = ?, fecha_informe = ? , nombre_persona_enviado = ? , descripcion = ? WHERE id_informe = ? ";
      stmt=conexion.hacerEnunciado(sql);
         try {
            stmt.setString(1, ((Informe)(informe)).getInformeRealizado() );
            stmt.setString(2, ((Informe)(informe)).getFechaInforme() );
            stmt.setString(3, ((Informe)(informe)).getNombrePersonaEnviado() );
            stmt.setString(4, ((Informe)(informe)).getDescripcion() );
            stmt.setInt(5, id);
            fila = stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeInforme.class.getName()).log(Level.SEVERE, null, ex);
        }
      return fila;
    }

}
